/*
 * Copyright 2008 the Breachwalls OSS project and the Others.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */
package com.breachwalls.mogen.xml.bean;

import java.io.Serializable;
import java.util.List;

/**
 * モデルクラス.
 * @author todoken
 * @version $Revision: 31 $
 */
public class ModelClass implements Serializable {

    /**
     * 自動生成モード.
     */
    private String mode;

    /**
     * モデルの説明.
     */
    private String description;

    /**
     * モデルの一意な名称.
     */
    private String name;

    /**
     * 親モデルの名称.
     */
    private String parent;

    /**
     * クラス名.
     */
    private String clazz;

    /**
     * 抽象クラスかどうか.
     */
    private String abstractClass;

    /**
     * モデルのタイプ.
     */
    private String type;

    /**
     * モデルクラスのプロパティ.
     */
    private List<ModelClassProperty> modelClassProperties;

    /**
     * 自動生成モードを取得する.
     * @return 自動生成モード
     */
    public String getMode() {
        return mode;
    }

    /**
     * 自動生成モードを設定する.
     * @param newMode 自動生成モード
     */
    public void setMode(String newMode) {
        this.mode = newMode;
    }

    /**
     * モデルの説明を取得する.
     * @return モデルの説明
     */
    public String getDescription() {
        return description;
    }

    /**
     * モデルの説明を設定する.
     * @param newDescription モデルの説明
     */
    public void setDescription(String newDescription) {
        this.description = newDescription;
    }

    /**
     * モデルの一意な名称を取得する.
     * @return モデルの一意な名称
     */
    public String getName() {
        return name;
    }

    /**
     * モデルの一意な名称を設定する.
     * @param newName モデルの一意な名称
     */
    public void setName(String newName) {
        this.name = newName;
    }

    /**
     * 親モデルの名称を取得する.
     * @return 親モデルの名称
     */
    public String getParent() {
        return parent;
    }

    /**
     * 親モデルの名称を設定する.
     * @param newParent 親モデルの名称
     */
    public void setParent(String newParent) {
        this.parent = newParent;
    }

    /**
     * クラス名を取得する.
     * @return クラス名
     */
    public String getClazz() {
        return clazz;
    }

    /**
     * クラス名を設定する.
     * @param newClazz クラス名
     */
    public void setClazz(String newClazz) {
        this.clazz = newClazz;
    }

    /**
     * 抽象クラスかどうかを取得する.
     * @return 抽象クラスかどうか
     */
    public String getAbstractClass() {
        return abstractClass;
    }

    /**
     * 抽象クラスかどうかを設定する.
     * @param newAbstractClass 抽象クラスかどうか
     */
    public void setAbstractClass(String newAbstractClass) {
        this.abstractClass = newAbstractClass;
    }

    /**
     * モデルのタイプを取得する.
     * @return モデルのタイプ
     */
    public String getType() {
        return type;
    }

    /**
     * モデルのタイプを設定する.
     * @param newType モデルのタイプ
     */
    public void setType(String newType) {
        this.type = newType;
    }

    /**
     * モデルクラスのプロパティを取得する.
     * @return モデルクラスのプロパティ
     */
    public List<ModelClassProperty> getModelClassProperties() {
        return modelClassProperties;
    }

    /**
     * モデルクラスのプロパティを設定する.
     * @param newModelClassProperties モデルクラスのプロパティ
     */
    public void setModelClassProperties(List<ModelClassProperty> newModelClassProperties) {
        this.modelClassProperties = newModelClassProperties;
    }

}
